home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-13 / emacs16d.zip / _UNCLASS.MIN < prev    next >
Text File  |  1992-03-26  |  14KB  |  700 lines

  1.  
  2.  
  3.  
  4. Name:F:auto-match-paren
  5. [*]#(k)
  6. #(ds,temp,#(it,100))
  7. #(==,##(temp),Timeout,(
  8.     #(pm,1)
  9.     #(Fvip-match-paren)
  10.     #(sv,fc,##(F-auto-paren-color))
  11.     #(g?,##(lv,rs),##(lv,bl),(
  12.         #(xy,0,##(lv,bl))
  13.         #(sv,fc,#(F-fore-color))
  14.         #(ow,##(rm,^))
  15.         #(sv,fc,##(F-auto-paren-color))
  16.         #(ow,##(rm,>)#(sp,>))
  17.         #(sv,fc,#(F-fore-color))
  18.         #(ow,##(rm,$)())
  19.     ),(
  20.         #(g?,##(lv,tl),##(lv,rs),(
  21.             #(xy,0,#(--,##(lv,tl),1))
  22.             #(sv,fc,#(F-fore-color))
  23.             #(ow,##(rm,^))
  24.             #(sv,fc,##(F-auto-paren-color))
  25.             #(ow,##(rm,>)#(sp,>))
  26.             #(sv,fc,#(F-fore-color))
  27.             #(ow,##(rm,$)())
  28.         ),(
  29.             #(xy,##(--,##(lv,cs),1),##(--,##(lv,rs),1))
  30.             #(ow,##(rm,>))
  31.         ))
  32.     ))
  33.     #(sp,0)
  34.     #(xy,##(--,##(lv,cs),1),##(--,##(lv,rs),1))
  35.     #(sv,fc,#(F-fore-color))
  36.     #(pm)
  37.     #(d,#(g))
  38. ),(
  39.     #(d,##(temp))
  40. ))
  41. #(SELF)
  42. [*]
  43.  
  44.  
  45. Name:F:backward-list
  46. Move backward over matched ()'s
  47. [*]#(==,#(Fbackward-find-paren,[,(##(bc,40,d,a)),(##(bc,41,d,a))),no,(
  48.     #(F:ring-the-bell)
  49. ))[*]
  50.  
  51.  
  52. Name:F:center-line
  53. Center text based on F-fill-column.
  54. [*]#(sp,^)
  55. #(dm,+)
  56. #(sp,$-)
  57. #(pm,1)
  58. #(sm,0)
  59. #(sp,^)
  60. #(is,#(Floop, ,##(//,##(--,##(F-fill-column),##(rc,0)),2)))
  61. #(sp,$)
  62. #(pm)
  63. [*]
  64.  
  65.  
  66. Name:F:count-lines-page
  67. Count the number of lines on this page.
  68. [*]#(pm,3)
  69. #(lp,##(F-page-delimiter),,R)
  70. #(l?,.,[,1,,,(
  71.     #(sm,1,[)
  72. ))
  73. #(l?,.,],2,,,(
  74.     #(sm,2,])
  75. ))
  76. #(Fr,(
  77.     #(Fmessage,(The page has ##(++,ARG1,ARG2) (((ARG1+ARG2))) lines))
  78. ),
  79.     #(--,##(lv,cl),#(sp,1)##(lv,cl)),
  80.     #(--,#(sp,2)##(lv,cl),#(sp,0)##(lv,cl))
  81. )
  82. #(pm)[*]
  83.  
  84.  
  85. Name:F:count-lines-region
  86. Report the number of lines in the region.
  87. [*]#(Fmessage,The region has #(**,#(mb,#(Fmark),1,-1),
  88.     #(--,##(lv,cl),#(F:swap-point-and-mark)##(lv,cl)#(F:swap-point-and-mark))
  89. ) lines)[*]
  90.  
  91.  
  92. Name:F:edit-tab-stops
  93. Create a buffer in other window to edit the tabstop list.
  94. [*]
  95. #(F:split-window-vertically)
  96. #(Ffind-or-make-buffer,*tab-stops*)
  97. #(Flocal-bind-key,K.C-c C-c,Fedit-tab-stops-note-changes)
  98. #(sv,bl,23)
  99. #(sv,tl,20)
  100. #(Fdisp-tab-stop-list)
  101. #(is,(
  102.           1         2         3         4         5         6         7
  103. 01234567890123456789012345678901234567890123456789012345678901234567890123456789
  104. To install changes, type C-c C-c))
  105. #(sp,[)
  106. [*]
  107.  
  108.  
  109. Name:F:execute-extended-command
  110. Read an extended command from the keyboard.
  111. [*]    
  112. #(ds,value,##(old-execute))
  113. #(Fcompleting-readline,#(==,arg1,,,(C-u arg1 ))M-x ,(
  114.     #(ds,old-execute,##(value))
  115.     #(Fresolve-name,##(value),(
  116.         #(==,##(go,#(temp))#(rs,#(temp)),(    ),(
  117.             #(#(temp),arg1)
  118.         ),(
  119.             #(Floop,(#(ds,result,#(#(temp)))),#(==,arg1,,1,arg1))
  120.             ##(result)
  121.         ))
  122.     ))
  123. ),(
  124.     #(Fmultiple,(Fdelete-n-chars,2),#(Flist-all-strings,:##(value)##(2nd-half)),SELF)
  125.     #(Fmultiple,(Fprefix-matches,:##(value)##(2nd-half),4),##(ls,(,),F!),SELF)
  126. ),-)[*]
  127.  
  128.  
  129. Name:F:forward-list
  130. Move forward over matched ()'s
  131. [*]#(==,#(Fforward-find-paren,],(##(bc,40,d,a)),(##(bc,41,d,a))),no,(
  132.     #(F:ring-the-bell)
  133. ))[*]
  134.  
  135.  
  136. Name:F:newline
  137. [wjm 4/12/90] Modified so that it breaks the current line if it is too
  138.     long in fill mode.
  139. [*]
  140. #(Fin-minor-mode,Abbrev,(#(A:expand-abbrev)))
  141. #(Fin-minor-mode,Spell,(#(F:spell-word,1)))
  142. #(Fin-minor-mode,Fill,(#(F:split-line)))
  143. #(Fcrlf)
  144. [*]
  145.  
  146.  
  147. Name:F:newline-and-indent
  148. Insert a newline followed by the same whitespace as on the previous line.
  149. [*]#(Fin-minor-mode,Abbrev,(#(A:expand-abbrev)))
  150. #(Fin-minor-mode,Spell,(
  151.     #(F:spell-word,1)
  152. ))
  153. #(pm,1)
  154. #(sp,^)
  155. #(Fnewline-and-indent-do)
  156. #(ds,temp,##(rm,^))
  157. #(sp,0)
  158. #(Fcrlf)
  159. #(is,##(temp))
  160. #(pm)
  161. [*]
  162.  
  163.  
  164. Name:F:open-line
  165. [*]#(Fcrlf)#(sp,<)[*]
  166.  
  167.  
  168. Name:F:recenter
  169. Reposition the line containing the cursor at the middle of the window.  If
  170. an argument is given, place the cursor at that line.
  171. Changed to make M-0 C-L do the same thing a GNU emacs.
  172. [*]    
  173. #(==,arg1,,(
  174.     #(sv,rs,##(++,##(//,#(--,##(lv,bl),##(lv,tl)),2),##(lv,tl)))
  175. ),(
  176.     #(sv,rs,
  177.         #(g?,#(++,arg1,1),0,(#(++,arg1,1)),(#(++,arg1,##(lv,bl))))
  178.     )
  179. ))[*]
  180.  
  181.  
  182. Name:F:set-comment-column
  183. Set the comment column or delete a comment.
  184. [*]    
  185. #(==,arg1,,(
  186.     #(ds,F-comment-column,##(lv,cs))
  187. ),(
  188.     #(g?,arg1    1,1,(
  189.         #(F:kill-comment)
  190.     ),(
  191.         #(ds,F-comment-column,arg1)
  192.     ))
  193. ))[*]
  194.  
  195.  
  196. Name:F:set-fill-column
  197. Set the fill column to the argument if one is given, or else use the current
  198. cursor position.
  199. [*]    
  200. #(==,arg1,,(
  201.     #(ds,F-fill-column,##(lv,cs))
  202. ),(
  203.     #(ds,F-fill-column,arg1)
  204. ))[*]
  205.  
  206.  
  207. Name:F:set-fill-prefix
  208. Set the fill prefix to everything at the beginning of the line.
  209. [*]#(ds,F-fill-prefix,##(rm,^))
  210. #(Fmessage,Fill prefix #(==,##(rm,^),,(
  211.     cancelled.
  212. ),(
  213.     set to "(##(rm,^))".)
  214. ))[*]
  215.  
  216.  
  217. Name:F:set-mark-command
  218. Modified by Ashok P. Nadkarni
  219. Set a mark at point if argument is null.  If a non-negative argument is
  220. given, pop the mark ring. If negative argument go to next mark.
  221. [*]    
  222. #(==,arg1,,(
  223.     #(Fmessage,Mark set)
  224.     #(Fset-new-mark,.)
  225. ),(
  226.     #(F:pop-mark,arg1)
  227. ))[*]
  228.  
  229.  
  230. Name:F:set-visited-filename
  231. Set the name of the current buffer.
  232. [*]#(Finsist,(arg1),SELF,(
  233.     #(Fbuffer-set-fn,arg1)
  234. ))[*]
  235.  
  236.  
  237. Name:F:shell-command
  238. Execute a shell command and insert its output into a buffer.  If given a
  239. non-null argument, insert the output into the current buffer.
  240. [*]    
  241. #(ds,value,##(old-shell))
  242. #(Freadline,! ,(
  243.     #(==,arg1,,(
  244.         #(Ffind-or-make-buffer,*shell-output*,no)
  245.         #(sp,])
  246.     ))
  247.     #(ds,old-shell,##(value))
  248.     #(ex,#(env.COMSPEC),#(env.SWITCHAR)c ##(value),,\pipe_out,\pipe_out)
  249.     #(pm,2)
  250.     #(is,!)
  251.     #(sm,0,<)
  252.     #(rf,\pipe_out)
  253.     #(==,##(rc,0),1,(
  254.         #(Fmessage,Shell command completed with no output)
  255.         #(Fremember-buffer,1)
  256.         #(Fswitch-to-buffer,#(Frecall-buffer),,bury)
  257.     ),(
  258.         #(sp,0)
  259.         #(dm,>)
  260.         #(Fset-new-mark,.)
  261.         #(sp,1)
  262.     ))
  263.     #(pm)
  264.     #(de,\pipe_out)
  265. ))[*]
  266.  
  267.  
  268. Name:F:shell-command-on-region
  269. Execute a shell command with the region as input.
  270. [*]    
  271. #(ds,value,##(old-filter))
  272. #(Freadline,! ,(
  273.     #(ds,old-filter,##(value))
  274.     #(wf,\pipe_in,#(Fmark))
  275.     #(==,arg1,,(
  276.         #(Ffind-or-make-buffer,*shell-output*,no)
  277.         #(sp,])
  278.     ),(
  279.         #(dm,#(Fmark))
  280.     ))
  281.     #(ex,#(env.COMSPEC),#(env.SWITCHAR)c ##(value),\pipe_in,\pipe_out,\pipe_out)
  282.     #(pm,2)
  283.     #(is,!)
  284.     #(sm,0,<)
  285.     #(rf,\pipe_out)
  286.     #(==,##(rc,0),1,(
  287.         #(==,arg1,,,(
  288.             #(Fy-or-n,Shell command completed with no output -- restore original,(
  289.                 #(rf,\pipe_in)
  290.             ))
  291.         ))
  292.     ))
  293.     #(sp,0)
  294.     #(dm,>)
  295.     #(Fset-new-mark,.)
  296.     #(sp,1)
  297.     #(pm)
  298.     #(de,\pipe_in)
  299.     #(de,\pipe_out)
  300. ))[*]
  301.  
  302.  
  303. Name:F:spell-word
  304. Spell check the word to the left of point.  If an argument is given and
  305. the word is mis-spelled, ring the bell.
  306. [*]    
  307. #(==,##(sc,,2),-1,(
  308.     #(Ferror,Speller not installed)
  309. ),(
  310.     #(ds,temp,##(rm,-))
  311.     #(mp,temp,,(,),(;),.,!,##(bc,41,d,a))
  312.     #(==,##(temp),,(
  313.         #(pm,1)
  314.         #(sm,0)
  315.         #(sp,-)
  316.         #(ds,temp,##(rm,{))
  317.         #(mp,temp,,0,1,2,3,4,5,6,7,8,9)
  318.         #(==,##(temp),,,(
  319.             #(==,arg1,,(
  320.                 #(Fmessage,##(temp) is spelled 
  321.                     #(==,#(sc,##(temp),0),-3,in)
  322.                 correctly)
  323.             ),(
  324.                 #(==,#(sc,##(temp),0),-3,(#(bl)))
  325.             ))
  326.         ))
  327.         #(sp,0)
  328.         #(pm)
  329.     ))
  330. ))[*]
  331.  
  332.  
  333. Name:F:split-space
  334. [wjm 4/12/90] old F:split-space modified to be usable with F:newline
  335. as well.
  336. [*]#(Fin-minor-mode,Abbrev,(#(A:expand-abbrev)))
  337. #(Fin-minor-mode,Spell,(#(F:spell-word,1)))
  338. #(Fin-minor-mode,Fill,(
  339.         #(F:split-line,(
  340.             #(g?,#(rc),#(nc,##(F-fill-prefix)),#(is, ))
  341.         ),(
  342.             #(Fcrlf)
  343.             #(is,##(F-fill-prefix))
  344.         ),(
  345.             #(is, )
  346.         ))
  347. ),(#(is, )))
  348. [*]
  349.  
  350.  
  351. Name:F:suspend-emacs
  352. Execute the program given in EMACS_SHELL if it exists, otherwise command.com.
  353. [*]#(ex,#(env.COMSPEC))[*]
  354.  
  355.  
  356. Name:F:test
  357. [*][*]
  358.  
  359.  
  360. Name:F:toggle-read-only
  361. [*]#(==,##(&&,##(lv,mb),2),2,(
  362.     #(sv,mb,##(&&,##(lv,mb),1))
  363. ),(
  364.     #(sv,mb,#(||,##(&&,##(lv,mb),1),2))
  365. ))[*]
  366.  
  367.  
  368. Name:F:try-it
  369. Bring the current line of text in and execute it.
  370. [*]#(ow,"#(rm,^)#(rm,$)"(
  371. ))
  372. #(Fhit-any-key)
  373. [*]
  374.  
  375.  
  376. Name:F:what-cursor-position
  377. GNU EMACS style point-position and statistics
  378. [*]#(pm,1)
  379. #(Fmessage,Line #(lv,cl)/#(lv,nl)
  380.   Col #(lv,cs)/#(sp,$)##(lv,cs)
  381.   Char= 0x#(bc,#(sp,0)##(rm,>),a,h)
  382.  = 0#(bc,#(sp,0)##(rm,>),a,o)
  383.  = #(bc,#(sp,0)##(rm,>),a,d)
  384.      Total-chars = #(sp,])#(rc,[)
  385. )
  386. #(sp,0)
  387. #(pm)
  388. [*]
  389.  
  390.  
  391. Name:F:what-page
  392. [*]#(pm,2)
  393. #(lp,##(F-page-delimiter),,R)
  394. #(sp,[)
  395. #(ds,what-page,1)
  396. #(Fwhile-yes,(
  397.     #(l?,.,1,,0,(
  398.         #(sp,0)
  399.         #(ds,what-page,##(++,##(what-page),1))
  400.         yes
  401.     ))
  402. ))
  403. #(Fmessage,Page ##(what-page)(((,))) line #(--,1,#(--,##(lv,cl)#(sp,1),##(lv,cl))))
  404. #(es,what-page)
  405. #(pm)[*]
  406.  
  407.  
  408. Name:F:where-is
  409. Called by Fhelp.w.  Given a command name in ##(temp) it finds the
  410. keys bound to it.
  411. [*]
  412. #(ds,value,##(temp))
  413. #(..#(gn,value,2))
  414. #(ds,where-answer)
  415. #(Fmultiple,Fwhere-is-do,##(ls,(,),K.),SELF)
  416. #(==,##(where-answer),,(
  417.     #(an,##(value) is not on any keys)
  418. ),(
  419.     #(an,##(where-answer))))
  420. [*]
  421.  
  422.  
  423. Name:F:word-count
  424. Return a count of words in the buffer.
  425. [*]#(sp,[)
  426. #(Fword-count-do,0)[*]
  427.  
  428.  
  429. Name:Fauto-save
  430. [*]#(bl)[*]
  431.  
  432.  
  433. Name:Fbreak
  434. Check for a user break (C-g).  If there is one, clear the input buffer,
  435. and abort any keyboard macro in progress, and return arg1.  Otherwise,
  436. return arg2.
  437. [*]#(==,##(kbd-in),C-g<>,(
  438.     arg1
  439. ),(
  440.     #(==,##(it,0),Timeout,(
  441.         arg2
  442.     ),(
  443.         #(==,##(it,0),C-g,(
  444.             #(Fkbd-in,##(it,1))
  445.             #(ds,kbd-count)
  446.             #(..,##(gn,kbd-buffer))
  447.             arg1
  448.         ),(
  449.             #(Fkbd-in,##(it,1))
  450.             arg2
  451.         ))
  452.     ))
  453. ))[*]
  454.  
  455.  
  456. Name:Fbuffer-char-count
  457. Get the character length of the buffer.
  458. (signed 16-bit ints, so goes negative if #chars > 32767)
  459.  
  460. [*]#(pm,1)
  461. #(sm,0)
  462. #(sp,[)
  463. #(rc,])
  464. #(sp,0)
  465. #(pm)
  466. [*]
  467.  
  468.  
  469. Name:Fcorners
  470. Call this with point, mark set to the other corner.
  471. [*]#(SELF-sort,
  472.       ##(lv,cl),
  473.       ##(lv,cs),
  474.       #(F:swap-point-and-mark)##(lv,cl),
  475.       ##(lv,cs)#(F:swap-point-and-mark)
  476. )[*]
  477.  
  478.  
  479. Name:Fcorners-sort
  480. Call this with arg1,arg2 = line,column of point, arg3,arg4 = line,column
  481. of mark, return arg1 = top, arg2 = left, arg3 = bot, arg4 = right.
  482. [*]#(g?,arg3,arg1,(
  483.     ##(g?,arg4,arg2,(arg1,arg2,arg3,arg4),(arg1,arg4,arg3,arg2))
  484. ),(
  485.     ##(g?,arg4,arg2,(arg3,arg2,arg1,arg4),(arg3,arg4,arg1,arg2))
  486. ))[*]
  487.  
  488.  
  489. Name:Fdisp-tab-stop-list
  490. [*]#(Fmultiple,SELF-do,##(F-tab-stop-list),SELF)[*]
  491.  
  492.  
  493. Name:Fdisp-tab-stop-list-do
  494. [*]#(is,#(Floop, ,#(--,(arg1),##(lv,cs))))#(is,:)[*]
  495.  
  496.  
  497. Name:Fedit-tab-stops-note-changes
  498. [*]#(Fread-tab-stop-list)
  499. #(F:delete-window)
  500. [*]
  501.  
  502.  
  503. Name:Fkill-emacs
  504. If there are no unsaved buffers, exits to dos.  If there are any unsaved
  505. buffers, and the user really wants to quit, exits to dos.  Otherwise it
  506. returns to the buffer number given in arg1.
  507. [*]#(==,##(unsaved-buffers),,(
  508.     #(an)
  509.     #(hl)
  510. ),(
  511.     #(Fyes-or-no,##(nc,##(unsaved-buffers))
  512.          modified buffer
  513.         #(==,##(unsaved-buffers),n, exists,s exist)
  514.          - do you really want to quit?,(
  515.         #(hl)
  516.     ))
  517.     #(..,##(ba,arg1))
  518. ))[*]
  519.  
  520.  
  521. Name:Flist-all-strings-do
  522. [*]##(ls,(,),arg2arg1)[*]
  523.  
  524.  
  525. Name:Fmaybe-write-abbrevs
  526. Write a file describing all defined abbrevs, but only if they've been changed.
  527. Return arg1 if we weren't C-g'ed.
  528. [*]#(n?,abbrevs-modified,(
  529.     #(Fy-or-n,Abbreviations modified - save them?,(
  530.         #(==,ARG1,y,(
  531.             #(A:write-abbrev-file)
  532.         ),(
  533.             #(ds,unsaved-buffers,##(unsaved-buffers)n)
  534.         ))
  535.         arg1
  536.     ))
  537. ),(arg1))[*]
  538.  
  539.  
  540. Name:Fmodify-syntax
  541. arg1 is the name of the syntax table,
  542. arg2 is the ASCII value of the char to change,
  543. arg3 is the new value of the entry.
  544. Test code:
  545.     #(ds,syntax,##(Fsyntax))
  546.     #(Fmodify-syntax,syntax,48,10)
  547.     #(is,##(syntax))#(Fcrlf)
  548. [*]#(ds,arg1,
  549.     ##(gn,arg1,arg2)
  550.     #(..,##(go,arg1))
  551.     ##(bc,arg3,d,a)
  552.     ##(gn,arg1,256)
  553. )[*]
  554.  
  555.  
  556. Name:Fnewline-and-indent-do
  557. Skip right past spaces and tabs.
  558. [*]#(==,##(rm,>), ,(
  559.     #(sp,>)#(SELF)
  560. ),(
  561.     #(==,##(rm,>),(    ),(
  562.         #(sp,>)#(SELF)
  563.     ))
  564. ))[*]
  565.  
  566.  
  567. Name:Fread-tab-stop-list
  568. [*]#(ds,F-tab-stop-list)
  569. #(sp,[)
  570. #(lp,:)
  571. #(pm,1)
  572. #(SELF-do)
  573. #(pm)
  574. #(sp,[)
  575. [*]
  576.  
  577.  
  578. Name:Fread-tab-stop-list-do
  579. [*]
  580. #(l?,.,$,0,,(
  581.     #(sp,0)
  582.     #(ds,F-t`b-stop-list,##(F-tab-stop-list)##(lv,cs)(,))
  583.     #(sp,>)
  584.     #(SELF)
  585.     ))
  586. [*]
  587.  
  588.  
  589. Name:Fsyntax
  590. This is the default syntax table.  Includes [0-9_A-Za-z].
  591. [*][*]
  592.  
  593.  
  594. Name:Ftab-to-tab-stop-do
  595. [*]
  596. #(==,arg1,,(
  597.         #(is,(    ))
  598.         #(rs,F-tab-stop-list)
  599.     ),(
  600.         #(g?,(arg1),##(lv,cs),(
  601.                 #(==,#(rc,$),0,(
  602.                         #(Fpad-to-column,(arg1))
  603.                     ),(
  604.                         #(sv,cs,(arg1))
  605.                     ))
  606.                 #(rs,F-tab-stop-list)
  607.             ),(
  608.                 #(SELF,##(fm,F-tab-stop-list,(,)))
  609.             ))
  610.     ))
  611. [*]
  612.  
  613.  
  614. Name:Funwind-recurse
  615. [*]#(==,##(Fmode-parens,A),([(A)]),(
  616.     #(ds,k,##(gs,Fredisplay,#(Farglist)))
  617.     #(mp,k,#(Farglist))
  618. ))
  619. #(==,arg1,,(
  620.     #(Ferror,Garbled recursive edit)
  621.     #(ds,Fmode-parens,((ARG1)))
  622. ),(
  623.     #(ds,Fmode-parens,##(Fmode-parens,ARG1))
  624.     #(ds,Fmode-parens,
  625.         ##(fm,Fmode-parens,[)
  626.         ##(fm,Fmode-parens,])
  627.         ##(gn,Fmode-parens,1000)
  628.     )
  629. ))
  630. #(mp,Fmode-parens,SELF,ARG1)
  631. [*]
  632.  
  633.  
  634. Name:Fvip-match-paren
  635. Find the paren that matches the one we're pointing to right now, and
  636. return 'yes' if it matches, and 'no' if it we're not on a paren.
  637. [*]#(Fcase,##(bc,##(rm,>)),
  638.     (40,(
  639.         #(Fforward-find-paren,],(##(bc,40,d,a)),(##(bc,41,d,a)))
  640.         #(sp,<)
  641.         yes
  642.     )),
  643.     (41,(
  644.         #(sp,>)
  645.         #(Fbackward-find-paren,[,(##(bc,40,d,a)),(##(bc,41,d,a)))
  646.         yes
  647.     )),
  648.     (123,(
  649.         #(Fforward-find-paren,],{,})
  650.         #(sp,<)
  651.         yes
  652.     )),
  653.     (125,(
  654.         #(sp,>)
  655.         #(Fbackward-find-paren,[,{,})
  656.         yes
  657.     )),
  658.     (91,(
  659.         #(Fforward-find-paren,],[,])
  660.         #(sp,<)
  661.         yes
  662.     )),
  663.     (93,(
  664.         #(sp,>)
  665.         #(Fbackward-find-paren,[,[,])
  666.         yes
  667.     )),
  668.     (no)
  669. )[*]
  670.  
  671.  
  672. Name:Fwhere
  673. [*]--#(g?,#(lv,nl),#(++,#(--,#(lv,bl),##(lv,tl)),1),(
  674.     #(==,#(lv,cl),1,Top,(
  675.         #(==,#(lv,cl),#(lv,nl),Bot,(#(lv,pb)%))
  676.     ))
  677. ),All)
  678. --[*]
  679.  
  680.  
  681. Name:Fwhere-is-do
  682. [*]
  683. #(ds,temp,##(arg1))
  684. #(..,##(gn,temp,2))
  685. #(==,##(temp),##(value),(
  686.     #(ds,temp,arg1)
  687.     #(..,##(gn,temp,2))
  688.     #(==,##(where-answer),,(#(ds,where-answer,##(value) is on ##(temp))),(
  689.         #(ds,where-answer,##(where-answer) and ##(temp))))
  690.     ))
  691. [*]
  692.  
  693.  
  694. Name:Fword-count-do
  695. [*]#(sp,+})
  696. #(==,##(rm,>),,(
  697.     #(Fmessage,arg1 words)
  698. ),(
  699.     #(SELF,##(++,arg1,1))
  700. ))[*]